﻿//#define FULL_TRACE

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Runtime.InteropServices;

using alib;
using alib.Bits;
using alib.Debugging;
using alib.Enumerable;
using alib.Reflection;

namespace agree.schema
{
	using xaml;

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	/// _ci_proxy
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	public class _ci_proxy : ConstructorInfo, _ConstructorInfo
	{
		public _ci_proxy()
			: base()
		{
		}

		public _ci_proxy(schema_type t)
		{
			this.t = t;
		}
		readonly schema_type t;

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/// properties

		public override MemberTypes MemberType { get { return MemberTypes.Constructor; } }

		public override MethodImplAttributes MethodImplementationFlags
		{
			get
			{
				dbg.write("_ci_proxy.MethodImplementationFlags... ");
				try
				{
					//x = ci.MethodImplementationFlags;
					var x = default(MethodImplAttributes);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override RuntimeMethodHandle MethodHandle
		{
			get
			{
				dbg.write("_ci_proxy.MethodHandle... ");
				try
				{
					//x = ci.MethodHandle;
					var x = default(RuntimeMethodHandle);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override MethodAttributes Attributes
		{
			get
			{
				dbg.write("_ci_proxy.Attributes... ");
				try
				{
					//x = ci.Attributes;
					var x = default(MethodAttributes);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override CallingConventions CallingConvention
		{
			get
			{
				dbg.write("_ci_proxy.CallingConvention... ");
				try
				{
					//x = ci.CallingConvention;
					var x = default(CallingConventions);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override bool IsGenericMethodDefinition
		{
			get
			{
				dbg.write("_ci_proxy.IsGenericMethodDefinition... ");
				try
				{
					//x = ci.IsGenericMethodDefinition;
					var x = default(bool);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override bool ContainsGenericParameters
		{
			get
			{
				dbg.write("_ci_proxy.ContainsGenericParameters... ");
				try
				{
					//x = ci.ContainsGenericParameters;
					var x = default(bool);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override bool IsGenericMethod
		{
			get
			{
				dbg.write("_ci_proxy.IsGenericMethod... ");
				try
				{
					//x = ci.IsGenericMethod;
					var x = default(bool);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override bool IsSecurityCritical
		{
			get
			{
				dbg.write("_ci_proxy.IsSecurityCritical... ");
				try
				{
					//x = ci.IsSecurityCritical;
					var x = default(bool);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override bool IsSecuritySafeCritical
		{
			get
			{
				dbg.write("_ci_proxy.IsSecuritySafeCritical... ");
				try
				{
					//x = ci.IsSecuritySafeCritical;
					var x = default(bool);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override bool IsSecurityTransparent
		{
			get
			{
				dbg.write("_ci_proxy.IsSecurityTransparent... ");
				try
				{
					//x = ci.IsSecurityTransparent;
					var x = default(bool);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override String Name
		{
			get
			{
				dbg.write("_ci_proxy.Name... ");
				try
				{
					//x = ci.Name;
					var x = default(String);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override Type DeclaringType
		{
			get
			{
				dbg.write("_ci_proxy.DeclaringType... ");
				try
				{
					//x = ci.DeclaringType;
					var x = default(Type);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override Type ReflectedType
		{
			get
			{
				dbg.write("_ci_proxy.ReflectedType... ");
				try
				{
					//x = ci.ReflectedType;
					var x = default(Type);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override IEnumerable<CustomAttributeData> CustomAttributes
		{
			get
			{
				dbg.write("_ci_proxy.CustomAttributes... ");
				try
				{
					//x = ci.CustomAttributes;
					var x = default(IEnumerable<CustomAttributeData>);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override int MetadataToken
		{
			get
			{
				dbg.write("_ci_proxy.MetadataToken... ");
				try
				{
					//x = ci.MetadataToken;
					var x = default(int);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}
		public override Module Module
		{
			get
			{
				dbg.write("_ci_proxy.Module... ");
				try
				{
					//x = ci.Module;
					var x = default(Module);
					dbg.objinf(x);
					return x;
				}
				catch (Exception ex) { dbg.ex_info(ex); throw; }
			}
		}

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/// methods
#if false
		public override bool Equals(Object obj)
		{
			dbg.write("_ci_proxy.Equals... ");
			try
			{
				//x = ci.Equals(obj);
				var x = default(bool);
				dbg.objinf(x);
				return x;
			}
			catch (Exception ex) { dbg.ex_info(ex); throw; }
		}
		public override int GetHashCode()
		{
			dbg.write("_ci_proxy.GetHashCode... ");
			try
			{
				//x = ci.GetHashCode();
				var x = default(int);
				dbg.objinf(x);
				return x;
			}
			catch (Exception ex) { dbg.ex_info(ex); throw; }
		}
#endif
		public override Object Invoke(BindingFlags bf, Binder binder, Object[] parameters, CultureInfo culture)
		{
			dbg.write("_ci_proxy.Invoke... ");
			try
			{
				var x = Activator.CreateInstance(this.t);
				//x = ci.Invoke(bf, binder, parameters, culture);
				dbg.objinf(x);
				return x;
			}
			catch (Exception ex) { dbg.ex_info(ex); throw; }
		}
		public override ParameterInfo[] GetParameters()
		{
			dbg.write("_ci_proxy.GetParameters... ");
			try
			{
				//x = ci.GetParameters();
				var x = default(ParameterInfo[]);
				dbg.objinf(x);
				return x;
			}
			catch (Exception ex) { dbg.ex_info(ex); throw; }
		}
		public override MethodImplAttributes GetMethodImplementationFlags()
		{
			dbg.write("_ci_proxy.GetMethodImplementationFlags... ");
			try
			{
				//x = ci.GetMethodImplementationFlags();
				var x = default(MethodImplAttributes);
				dbg.objinf(x);
				return x;
			}
			catch (Exception ex) { dbg.ex_info(ex); throw; }
		}
		public override Object Invoke(Object obj, BindingFlags bf, Binder binder, Object[] parameters, CultureInfo culture)
		{
			dbg.write("_ci_proxy.Invoke... ");
			try
			{
				var x = Activator.CreateInstance(this.t);
				//x = ci.Invoke(bf, binder, parameters, culture);
				dbg.objinf(x);
				return x;
			}
			catch (Exception ex) { dbg.ex_info(ex); throw; }
		}
		public override Type[] GetGenericArguments()
		{
			dbg.write("_ci_proxy.GetGenericArguments... ");
			try
			{
				//x = ci.GetGenericArguments();
				var x = default(Type[]);
				dbg.objinf(x);
				return x;
			}
			catch (Exception ex) { dbg.ex_info(ex); throw; }
		}
		public override MethodBody GetMethodBody()
		{
			dbg.write("_ci_proxy.GetMethodBody... ");
			try
			{
				//x = ci.GetMethodBody();
				var x = default(MethodBody);
				dbg.objinf(x);
				return x;
			}
			catch (Exception ex) { dbg.ex_info(ex); throw; }
		}
		public override Object[] GetCustomAttributes(bool inherit)
		{
			dbg.write("_ci_proxy.GetCustomAttributes... ");
			try
			{
				//x = ci.GetCustomAttributes(inherit);
				var x = default(Object[]);
				dbg.objinf(x);
				return x;
			}
			catch (Exception ex) { dbg.ex_info(ex); throw; }
		}
		public override Object[] GetCustomAttributes(Type T_attr_typ, bool inherit)
		{
			dbg.write("_ci_proxy.GetCustomAttributes... ");
			try
			{
				//x = ci.GetCustomAttributes(T_attr_typ, inherit);
				var x = default(Object[]);
				dbg.objinf(x);
				return x;
			}
			catch (Exception ex) { dbg.ex_info(ex); throw; }
		}
		public override bool IsDefined(Type T_attr_typ, bool inherit)
		{
			dbg.write("_ci_proxy.IsDefined... ");
			try
			{
				//x = ci.IsDefined(T_attr_typ, inherit);
				var x = default(bool);
				dbg.objinf(x);
				return x;
			}
			catch (Exception ex) { dbg.ex_info(ex); throw; }
		}
		public override IList<CustomAttributeData> GetCustomAttributesData()
		{
			dbg.write("_ci_proxy.GetCustomAttributesData... ");
			try
			{
				//x = ci.GetCustomAttributesData();
				var x = default(IList<CustomAttributeData>);
				dbg.objinf(x);
				return x;
			}
			catch (Exception ex) { dbg.ex_info(ex); throw; }
		}
		public override String ToString()
		{
			dbg.write("_ci_proxy.ToString... ");
			try
			{
				//x = ci.ToString();
				var x = default(String);
				dbg.objinf(x);
				return x;
			}
			catch (Exception ex) { dbg.ex_info(ex); throw; }
		}
	};
}
